2 | 您所在的位置:网站首页 › GLib库入门与实践 pdf下载 › 2 |
类型转换宏提供了整型与指针类型的互相转换功能,非常方便,也经常会用到。 类型转换宏说明 #define GINT_TO_POINTER() // 整型转换为指针 #define GPOINTER_TO_INT() // 指针转换为整型 #define GUINT_TO_POINTER() // 无符号整型转换为指针 #define GPOINTER_TO_UINT() // 指针转换为无符号整型 #define GSIZE_TO_POINTER() // gsize类型转换为指针 #define GPOINTER_TO_SIZE() // 指针转换为gsize类型 类型转换宏用法GLib库很多函数的用户数据类型都是pointer类型,这样做的目的是为了让用户方便地扩展自己定义的数据类型,但如果我们只需传递一个整数(这种情况还挺多),则只需要一个GINT_TO_POINTER宏将整数转换成指针就可以了。 例如,异步队列入队列函数的定义为: void g_async_queue_push (GAsyncQueue *queue, gpointer data) 第二个参数为gpointer类型,在使用时只需要这样传入整数: g_async_queue_push(queue, GINT_TO_POINTER (1));异步队列出队列函数的定义为: gpointer g_async_queue_pop (GAsyncQueue *queue) 返回值是一个gpointer类型,可以这样将刚才传入的值取出来: gint value = 0; gpointer item = NULL; item = g_async_queue_pop (q); value = GPOINTER_TO_INT (item)对于guint和gsize,用法和gint一样。 |
CopyRight 2018-2019 实验室设备网 版权所有 |